from typing import List
"""
    给你一个按 非递减顺序 排序的整数数组 nums，
    返回 每个数字的平方 组成的新数组，要求也按 非递减顺序 排序。
    

    示例 1：
    
        输入：nums = [-4,-1,0,3,10]
        输出：[0,1,9,16,100]
        解释：平方后，数组变为 [16,1,0,9,100]
        排序后，数组变为 [0,1,9,16,100]
        
    示例 2：
    
        输入：nums = [-7,-3,2,3,11]
        输出：[4,9,9,49,121]
"""

class Solution:
    def sortedSquares(self, nums: List[int]) -> List[int]:
        ans = [0] * len(nums)
        pre = 0
        end = len(nums) - 1
        for i in range(len(nums)-1,-1,-1):
            if nums[pre] < 0 and -nums[pre] > nums[end]:
                ans[i] = nums[pre] * nums[pre]
                pre += 1
            else:
                ans[i] = nums[end] * nums[end]
                end -= 1
        return ans